#coding: utf-8

from java import EntityMapper

def toEntity(item, doc, entity) :
    """
        private String devid;
        ==> entity.setDevid((String)doc.get("devid"));
    :param item:
    :param doc:
    :param entity:
    :return:
    """
    # result = '{}.set{}{}(({}){}.get("{}"));'\
    #     .format(entity, item[2][0].upper(), item[2][1:], item[1], doc, item[2])
    result = '{}.set{}{}(MongoUtil.get{}({}, "{}"));'\
        .format(entity, item[2][0].upper(), item[2][1:], item[1], doc, item[2])


    print(result)


def toDocument(item, entity) :
    """
    private String devid;
        ==> .append("devid", entity.getDevid())
    :param item:
    :return:
    """
    # .append("devid", can.getDevid())
    result = '.append("{}", {}.get{}{}())'.format(item[2], entity, item[2][0].upper(), item[2][1:])
    print(result)



def toUpdateDoc(item) :
    #Updates.set("time", can.getTime()),
    result = 'Updates.set("{}", can.get{}{}()),'.format(item[2], item[2][0].upper(), item[2][1:])
    print(result)

def toGpsStr(item) :
    #sb.append("devid:").append(devid);
    result = 'sb.append(",{}:").append({});'.format(item[2], item[2])
    print(result)

    #gps.setDevid((String)doc.get("devid"));

if __name__ == '__main__':
    str = """
    private String devid;   // String  device id
    private int upordown;   // int     上下行。是下行命令还是上行回复  1：上行；2：下行；默认为0表示未设置
    private int cmdtype;    // int     命令类型。1：上下行文字；2：单次定位请求；3：车辆控制；4：配置信息 0：未设置。默认为0
    private int cmdid;      // int     命令的识别码，对不同命令类型有不同意义。
    private String cmdtext; // String  命令内容
    private Date rectm;     // Date    保存数据的时间
    private int processed;  // int     是否已处理。默认为0，未被处理； 1 - 已处理
    private Date processtm; // Date    处理数据的时间
    private int confirmed;  // int     是否已被确认，针对下行，是否收到终端的回复。
    private Date confirmtm; // Date    收到回复内容的时间
    private String confirmtext; //  String  网关命令下发之后的回复信息
    private String gwid;   // String  网关代号，那个网关处理
    """

    results = EntityMapper.parse(str)
    for item in results :
        toEntity(item, 'doc', 'entity')
        #print(item)
        #toDocument(item, 'entity')
        #toUpdateDoc(item)
        #toGpsStr(item)
